// http://www.fuzzygamedev.com/2007/05/implementando-la-clase-camara/
#include "EngineApi.h"
#include "Renderer.h"

enum eCameraType 
{ 
   ECT_GROUND, 
   ECT_AIR, 
};

class ENGINE_API Camera
{
   Vector3 m_position;
   
   Vector3 m_look;
   Vector3 m_up;
   Vector3 m_right;

   eCameraType m_cameraType;

public:
   Camera();
   Camera(float x, float y, float z);
   Camera(Vector3 position);
   //~Camera();

   //???
   void Draw(Renderer* renderer);

   //! Sets the camera on the given position
   void SetPosition(Vector3 position){ m_position = position; }
   Vector3 GetPosition() { return m_position; }

   //! Sets the camera
   void SetLookAtTarget(Vector3 target) { m_look = target; }
   void SetLookAtPosition(Vector3 position);

   void Pitch(float angle);
   void Yaw(float angle);
   void Roll(float angle);
   
   void Walk(float val);
   void Fly(float val);
   void Strafe(float val);
};